#  (c) Copyright Juergen Hunold 2008
#  Use, modification, and distribution are subject to the
#  Boost Software License, Version 1.0. (See accompanying file
#  LICENSE.txt or copy at https://www.bfgroup.xyz/b2/LICENSE.txt)

import qt5 ;
import testing ;
import cast ;

path-constant CWD : . ;

if ! [ qt5.initialized ]
{
    # assuming qt5 from system
    using qt5 : /usr/ ;

    project qttest-initialization : ;

    alias qt-tests-initialization :
      [ run initialization.cpp /qt5//QtCore ]
    : # requirements
    : # default-build
    : # usage-requirements
    ; 
}

if [ qt5.initialized ]
{
    use-project /boost : ../../../.. ;

    project qttest
      : requirements
          <library>/boost/test//boost_unit_test_framework
      ;

    alias qt-tests :
      # Check for explicit libraries, <use>/qt should not link any lib
      [ link-fail qtcorefail.cpp : <use>/qt ]

      [ run qtcore.cpp /qt5//QtCore ]
      [ run qtsql.cpp  /qt5//QtSql  ]
      [ run qtxml.cpp  /qt5//QtXml  ]
      [ run qtnetwork.cpp /qt5//QtNetwork ]
      [ run qtscript.cpp  /qt5//QtScript  ]
      [ run qtscripttools.cpp  /qt5//QtScriptTools  ]
      [ run qtxmlpatterns.cpp  /qt5//QtXmlPatterns  ]

      [ run qtpositioning.cpp  /qt5//QtPositioning  ]

      # ToDo: runable example code
      [ link qtsvg.cpp /qt5//QtSvg ]
      [ link qtwidgets.cpp /qt5//QtWidgets ]

      # Multimedia toolkits.
      [ link qtwebkit.cpp /qt5//QtWebKit ]
      [ link qtwebkitwidgets.cpp /qt5//QtWebKitWidgets ]
      [ link qtmultimedia.cpp /qt5//QtMultimedia ]

      # QtQuick version1
      [ link qtdeclarative.cpp /qt5//QtDeclarative ]

      # QtQuick version2
      [ run qtquick.cpp /qt5//QtQuick : "--" -platform offscreen : $(CWD)/qtquick.qml ]

      [ run qtwebengine.cpp /qt5//QtWebEngine ]
      [ run qtwebenginewidgets.cpp /qt5//QtWebEngineWidgets ]

      # QtSerialPort
      [ run qtserialport.cpp /qt5//QtSerialPort ]

      [ run qtlocation.cpp  /qt5//QtLocation  ]

      [ run qtwebchannel.cpp /qt5//QtWebChannel ]
      [ run qtwebsockets.cpp /qt5//QtWebSockets ]
      [ run qtwebview.cpp /qt5//QtWebView ]

      [ run qtpurchasing.cpp /qt5//QtPurchasing ]

      [ run qtcharts.cpp  /qt5//QtCharts  ]

      [ run qt3dcore.cpp   /qt5//Qt3DCore ]
      [ run qt3drender.cpp /qt5//Qt3DRender ]
      [ run qt3dinput.cpp  /qt5//Qt3DInput ]
      [ run qt3dlogic.cpp  /qt5//Qt3DLogic ]

      [ run qtdatavisualization.cpp /qt5//QtDataVisualization ]

      # Qt Connectivity
      [ run qtbluetooth.cpp /qt5//QtBluetooth ]
      [ run qtnfc.cpp /qt5//QtNfc ]

      [ run qtgamepad.cpp /qt5//QtGamepad ]

      [ run qtscxml.cpp /qt5//QtScxml ]

      [ run qtserialbus.cpp /qt5//QtSerialBus ]


      # Help systems.
      [ link qthelp.cpp      /qt5//QtHelp ]

      # Testing using QtTest. Simple sample
      # ToDo: better support for "automoc" aka '#include "qttest.moc"'
      [ run qttest.cpp [ cast _ moccable5-cpp : qttest.cpp ] /qt5//QtTest : : : <define>TEST_MOCK ]

      # Test moc rule
      [ run mock.cpp mock.h /qt5//QtCore : : : <define>TEST_MOCK ]

      # Test resource compiler
      [ run rcc.cpp rcc.qrc /qt5//QtCore : : : <rccflags>"-compress 9 -threshold 10" ]

   : # requirements
   : # default-build
   : # usage-requirements
   ;
}


